Amazon RDS 크로스 리전 읽기 복제본을 사용해 봤습니다.

Amazon RDS 크로스 리전 읽기 복제본을 사용해 봤습니다.

Amazon RDS 크로스 리전 읽기 복제본을 사용해 봤으므로 정리해 봤습니다.
Clock Icon2024.12.23

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 Amazon RDS 크로스 리전 읽기 복제본을 사용해 봤으므로 정리해 봤습니다.

크로스 리전 읽기 복제본 조건

jw-crossreblg-1

이번 블로그에서는 RDS의 크로스 리전 읽기 복제본을 셍성해 보고자 합니다.

생성하기에 앞서, 먼저 크로스 리전 읽기 복제본을 사용하기 위한 몇 가지 조건이 존재합니다.

RDS for Db2의 경우 크로스 리전 읽기 복제본을 지원하지 않습니다.

RDS for SQL Server의 경우 아래의 리전에서는 크로스 리전 복제본을 사용할 수 없습니다.

  • 아프리카(케이프타운)
  • 아시아 태평양(홍콩)
  • 아시아 태평양(하이데라바드)
  • 아시아 태평양(자카르타)
  • 아시아 태평양(멜버른)
  • 캐나다 서부(캘거리)
  • 유럽(밀라노)
  • 유럽(스페인)
  • 유럽(취리히)
  • 이스라엘(텔아비브)
  • 중동(바레인)
  • 중동(UAE)

이번 블로그에서는 RDS for MySQL을 사용할 예정이며, 8.0, 5.7 버전에서 크로스 리전 복제본을 사용할 수 있습니다. (마이너 버전 포함)

보다 상세한 내용은 아래 AWS 공식 문서에서 확인할 수 있습니다.

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Concepts.RDS_Fea_Regions_DB-eng.Feature.CrossRegionReadReplicas.html

EC2와 RDS 준비

EC2 인스턴스의 경우 Linux OS를 선택했습니다.

sudo yum -y install mysql

이어서 mysql을 설치했습니다.

jw-crossreblg-2

EC2 인스턴스의 경우 SSM으로 접속하기 때문에 별다른 보안 그룹 설정은 하지 않았습니다. RDS는 EC2에서만 접속이 가능하도록 설정하기 위해 인바운드 그룹에서 EC2 인스턴스의 보안 그룹만을 허용하도록 설정했습니다.

mysql -h [RDS 엔드포인트] -P 3306 -u admin -p

이러한 준비 과정이 끝났다면 상기 명령어로 RDS에 접속이 되는지 확인합니다.

mysql> use [데이터베이스명]

mysql> CREATE TABLE test_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL
);

mysql> INSERT INTO test_table (name) VALUES ('Alice'), ('Bob'), ('Charlie');

RDS에 접속했다면, 상기 명령어를 통해 더미 데이터를 삽입합니다.

크로스 리전 읽기 복제본 사용

jw-crossreblg-3

이제 크로스 리전 읽기 복제본을 사용하기 위해 RDS 콘솔 화면에서 [작업]→[읽기 전용 복제본 생성]을 클릭합니다.

jw-crossreblg-4

이어서 DB 인스턴스 식별자를 입력하고, 읽기 복제본을 생성할 리전을 선택합니다. 현재 RDS가 생성되어 있는 리전은 도쿄 리전이므로 읽기 복제본은 서울 리전에 생성할 생각입니다.

jw-crossreblg-5

여기서 중요한 것은 읽기 복제본을 생성할 때 서브넷 그룹을 선택하는 과정에서 존재하지 않는 혹은 삭제해 버린 VPC를 포함하고 있는 서브넷 그룹을 선택하면 읽기 전용 복제본을 생성할 수 없습니다. 서울 리전에서 생성한 VPC를 포함하고 있는 서브넷 그룹을 생성하거나 포함하고 있는 서브넷 그룹을 선택합니다.

jw-crossreblg-6

읽기 전용 복제본 생성을 클릭하면 선택한 리전에서 복제본을 생성중이라는 팝업창을 확인할 수 있습니다.

jw-crossreblg-7

서울 리전으로 들어가 보면, 복제본이라는 역할로 데이터베이스가 생성되고 있는 것을 확인할 수 있습니다.

읽기 복제본 확인

읽기 복제본의 경우 생성되기 까지 시간이 걸리는 편입니다. 또한, 백업한 스냅샷을 바탕으로 읽기 복제본을 생성하기 때문에 백업한 스냅샷에 따라 시간과 용량에 영향을 미칠 수 있습니다.

현재 400 GiB 스토리지의 최소한의 더미 데이터만을 삽입한 읽기 복제본의 경우 생성까지 약 16분 정도 걸렸습니다.

mysql -h testdb.cdwdd9uwek21.ap-northeast-2.rds.amazonaws.com -P 3306 -u admin -p

elcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 8.0.39 Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>

이어서 서울 리전의 EC2 인스턴스에서 읽기 복제본으로 접속을 시도해 보면, 성공적으로 접속이 가능한 것을 확인할 수 있습니다.

MySQL [(none)]> use testdb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MySQL [testdb]> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| test_table       |
+------------------+
1 row in set (0.00 sec)

MySQL [testdb]> select * from test_table;
+----+---------+
| id | name    |
+----+---------+
|  1 | Alice   |
|  2 | Bob     |
|  3 | Charlie |
+----+---------+
3 rows in set (0.00 sec)

마지막으로 생성한 테이블과 더미 데이터를 확인해 보면, 원본에서 성공적으로 복제된 것을 확인할 수 있습니다.

본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 jaewookkim533@yahoo.com로 보내주시면 감사하겠습니다.

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.